home *** CD-ROM | disk | FTP | other *** search
Text File | 1982-06-08 | 51.8 KB | 1,285 lines |
- Version 3.7 October 16, 1981
-
- It is now possible to split lines with substitute commands from vi,
- by using ^V<return> in the rhs. This takes care of the last
- good reason for using ex command mode.
-
- Mode lines are now supported. Put a line containing
- ex: xxx :
- in the first or last 5 lines of the file, where xxx is any ex
- command you want executed when that file is read in. To make
- other programs happy, it should probably be inside a comment.
- You can use vi: as well as ex:. (Note: no space allowed
- between the "ex" and ":". The spaces around xxx are considered
- part of the command, and so are optional.)
-
- If there is a file .exrc in the current directory, it will be
- sourced when you enter vi, after your EXINIT or ~/.exrc.
-
- The changeable scrolling region of the vt100 is now used in
- place of insert line, resulting in much better performance.
-
- Vi uses the new AL, DL, LE, RI, DO, and UP (all upper case)
- termcap capabilities, which are parameterized versions of their
- lower case equivalents. This will results in better performance
- on ANSI terminals, and especially on the Tektronix 4025 which
- has parameterized local motions but cannot cursor address.
-
- Vi uses backtabs again. Now it knows how to handle backtabs on
- terminals that have tabs set at intervals other than 8, and it
- won't use backtabs if gtty indicates it can't use tabs.
-
- A bug causing <escape> <del> to core dump vi has been fixed.
-
- A bug causing writes to filters when editing encrypted files
- to write encrypted text has been fixed.
-
- A bug causing the message "substitution loop", when you enter a
- 1,$s/xxx/yyy/g with lots of changes, has been fixed.
-
- A bug causing the current directory to be chmodded to 0 if you
- set nomesg after starting up the editor has been fixed. Note
- that the nomesg option is intended for your EXINIT, since it only
- takes effect on entry to the editor.
-
- The eat newline glitch has been fixed so that vt100's and tab132's
- handle long lines correctly.
-
- Some internal changes have been made so that vi can run under UNIX
- on the Bell Labs 3B machine, the BBN C/70, and the IBM 370.
-
- Version 3.6 October 30, 1980
-
- A kernel problem on the V7 pdp-11 overlay systems which causes
- bad EMT traps to happen randomly, core dumping the editor,
- has been programmed around by catching EMT traps.
-
- A bug which prevented using a screen larger than 48 lines has
- been fixed.
-
- A bug which allowed you to set window to a value larger than
- your screen size has been fixed.
-
- The screen size limit on non-VM/Unix systems has been increased
- to 66 lines or 5000 characters, to allow the Ann Arbor Ambassador
- terminal to be used.
-
- A bug which caused hangups to be ignored on USG systems has
- been fixed.
-
- A bug which caused maps with multiple changes on multiple lines
- to mess up has been fixed.
-
- If you get I/O errors, the file is considered "not edited" so
- that you don't accidently clobber the good file with a munged
- up buffer.
-
- An inefficiency in 3.5 which caused the editor to always call
- ttyname has been fixed.
-
- A bug which prevented the "source" command from working in an
- EXINIT or from visual has been fixed.
-
- A bug which caused readonly to be cleared when reading from
- a writable file with "r" has been fixed.
-
- The name "suspend" has been made an alias for "stop".
-
- The stop command now once again works correctly from command mode.
-
- On a dumb terminal at 1200 baud, "slowopen" is now the default.
-
- A bug in the shell script "makeoptions" which searched for a
- string that appeared earlier in a comment has been fixed.
-
- A bug that caused an infinite loop when you did ":s/\</&/g"
- has been fixed.
-
- A bug that caused & with no previous substitution to give
- "re internal error" has been fixed.
-
- A bug in the binary search algorithm for tags which sometimes
- prevented the last tag in the file from being found has been fixed.
-
- Error messages from expreserve no longer output a linefeed,
- messing up the screen.
-
- The message from expreserve telling you a buffer was saved when
- your phone was hung up has be amended to say the editor was
- terminated, since a kill can also produce that message.
-
- The "directory" option, which has been broken for over
- a year, has been fixed.
-
- The "r" command no longer invokes input mode macros.
-
- A bug which caused strangeness if you set wrapmargin to 1
- and typed a line containing a backslash in column 80 has
- been fixed.
-
- A bug which caused the "r<cr>" at the wrapmargin column
- to mess up has been fixed.
-
- On terminals with both scroll reverse and insert line,
- the least expensive of the two will be used to scroll up.
- This is usually scroll reverse, which is much less annoying
- than insert line on terminals such as the mime I and mime 2a.
-
- A bug which caused vi to estimate the cost of cursor motion
- without taking into account padding has been fixed.
-
- The failure of the editor to check counts on ^F and ^B commands
- has been fixed.
-
- The "remap" option failed completely if it was turned off.
- This has been fixed.
-
- A check of the wrong limit on a buffer for the right hand side
- of substitutions has been fixed. Overflowing this buffer could
- produce a core dump.
-
- A bug causing the editor to go into insert mode if you typed
- return during an R command has been fixed.
-
- A bug preventing the + command from working when you edit a
- new file has been fixed by making it no longer an error to
- edit a new file (when you first enter the editor.) Instead
- you are told it is a new file.
-
- If an error happens when you are writing out a file, such as
- an interrupt, you are warned that the file is incomplete.
-
- Version 3.5 -- August 20, 1980
-
- The provisions for changing the window size with a numeric
- prefix argument to certain visual commands have been deleted.
- The correct way to change the window size is to use the z
- command, for example z5<cr> to change the window to 5 lines.
-
- The code to handle the -x (encryption) option has been made
- conditionally compiled, so that ex can run on an an 11/34 (!)
- with overlays. Since this code calls getpass, stdio was
- being pulled in even without VMUNIX being defined. The
- savings from not defining CRYPT are about 4K of text and 4.5K
- of bss.
-
- Bill Joy put in a buffering scheme under the VMUNIX flag so
- that up to 64K of file is edited in-core until you make enough
- changes to force a temp file sync. This makes entry into the
- editor much faster, but also makes vi much bigger.
-
- The source to ex is now sccs'ed.
-
- An undocumented "feature" which caused the ^^ command to return
- to the previous tag, if in the current file, instead of the
- previous file, has been removed.
-
- A bug which prevented ex from compiling on systems with the new
- tty driver but no process control (such as Cory) was fixed.
-
- Version 3.4 -- June 24, 1980
-
- The visual page motion commands ^F and ^B now treat any preceding
- counts as number of pages to move, instead of changes to the
- window size. That is, 2^F moves forward 2 pages.
-
- A :vi <file> command from visual mode is now treated the same
- as a :edit <file> or :ex <file> command. The meaning of the
- vi command from ex command mode is not affected.
-
- Provisions to handle the new process stopping features of the
- Berkeley TTY driver have been added. A new command, "stop",
- takes you out of the editor cleanly and efficiently, returning
- you to the shell. Resuming the editor puts you back in command
- or visual mode, as appropriate. If autowrite is set and there
- are outstanding changes, a write is done first unless you say
- "stop!". From visual mode, the command ^Z is the same as :stop.
- Note that if you have an arrow key that sends ^Z the stop function
- will take priority over the arrow function. If you have your
- "susp" character set to something besides ^Z, that key will be
- honored as well.
-
- A read only mode now lets you guarantee you won't clobber your
- file by accident. You can set the on/off option "readonly" (ro)
- and writes will fail unless you use an ! after the write.
- Commands such as x, ZZ, and autowrite, and in general anything
- that writes is affected. This option is turned on if you invoke
- ex with the -R flag. A new link called "view" has been created.
- View is just like vi but it sets readonly.
-
- The encryption code from the v7 editor is now part of ex.
- You invoke ex with the -x option and it will ask for a key,
- as ed. The ed "x" command (to enter encryption mode from
- within the editor) is not available.
-
- The editor now adopts the convention that a null string in the
- environment is the same as not being set. This applies to
- TERM, TERMCAP, and EXINIT.
-
- A word abbreviation mode is now available. You can define
- abbreviations with the abbreviate command
- :abbr foo find outer otter
- which maps "foo" to "find outer otter". Abbreviations can be
- turned off with the "unabbreviate" command. The syntax of these
- commands is identical to the map and unmap commands, except
- that the ! forms do not exist. Abbreviations are considered
- when in visual input mode only, and only affect whole words
- typed in, using the conservative definition. (Thus "foobar"
- will not be mapped as it would using map!)
- Abbreviate and unabbreviate can be abbreviated to "ab" and
- "una", respectively.
-
- The editor now supports certain terminals that use strings other
- then \r and \n for return and linefeed by implementing the cr
- and nl termcap options. (Thanks to UCLA for these enhancements).
-
- The termcap attribute ns is now checked for, and ex refuses to
- go into visual mode on such a terminal unless it has sf.
-
- Terminals that can cursor address but cannot go up a line
- now work in visual.
-
- If you change your start and stop characters to something other
- than the default ^S and ^Q, vi now turns them off. This causes
- people who change them to escape not to lose so badly.
- The quit character is once again turned off so that datamedias
- which send ^\ for the right arrow key work.
-
- The ~ command now repeats correctly with ".".
-
- If you type in an unmatched ) or } in showmatch mode, the editor
- will now beep to warn you about your mistake. The ) or } is
- still accepted.
-
- The way macros are undone has been improved considerably.
- The number of changes inside the macro is counted, and just
- before the second change the state before the macro is recreated
- internally and saved to allow the macro to be undoable as a unit.
- Hence, if the macro makes only one change the particular change is
- undone (which will probably not redraw the screen). If no changes
- are made (for example, the arrow keys) the previous thing that could
- be undone is not clobbered.
-
- The undomacro option has been deleted since it is no longer needed.
-
- Editor scripts can now contain comments. Begin the comments with "
- (double quote). Comments can be on their own line or come at the
- end of command lines. The comment continues to the end of the line.
-
- The 3rd version of the USG tty driver is now supported, making it
- possible on USG systems to interrupt redrawing the screen and to
- not flush output when interruptable commands take place.
-
- The rewind command has been added to the list of commands that
- the autowrite option knows about.
-
- The wrapmargin option is now usable. The way it works has been
- completely revamped. Now if you go past the margin (even in the
- middle of a word) the entire word is erased and rewritten on the
- next line. This changes the semantics of the number given to
- wrapmargin. 0 still means off. Any other number is still a
- distance from the right edge of the screen, but this location
- is now the right edge of the area where wraps can take place,
- instead of the left edge. Wrapmargin now behaves much like
- fill/nojustify mode in nroff.
-
- A bug on the USG system where hanging up the phone causes more
- than one SIGHUP to be sent has been compensated for.
-
- A bug which caused the :sh command not to send the vs and ti
- sequences when you returned has been fixed.
-
- A bug which caused a file that bombed out in the middle of
- an edit command to be considered modified has been fixed.
-
- A bug which caused the screen to be wrong after undoing a
- :move command has been fixed.
-
- A bug which messed up the buffer and the screen after
- undoing a :join command has been fixed.
-
- The source file ex_io.c has been split into ex_io.c and
- ex_unix.c to avoid a problem where many C compilers overflowed
- the symbol table.
-
- A bug which prevented turning off your prompt in your .exrc
- has been fixed.
-
- Some of the code internal to the editor has been rearranged
- and some comments added.
-
- The bug fix to the USG tty driver to output a null character
- as padding at 1200 baud has been improved to output a DEL
- at 1200 baud or above.
-
- Terminals with small screens (less than 20 columns or less
- than 5 lines) should now work.
-
- A bug which prevented you from entering the character DEL
- into the buffer if you changed your interrupt character to
- something else besides DEL has been fixed.
-
- A bug which caused the current line to be clobbered when
- you did a /, ?, or : command which mapped an input macro
- successfully has been fixed.
-
- If you map o to O and O to o and have remap set, the editor
- now catches the infinite loop.
-
- A put command after a macro now beeps instead of putting
- a copy of the whole buffer. (Note that the arrow keys
- on terminals are considered macros.)
-
- A bug which caused things like d) and d} to miss the last
- character when they should have deleted to the end of the
- buffer has been fixed.
-
- A bug which caused the last character to be lost when you
- read in a file with no newline at the end of the last line
- has been fixed.
-
- A bug that caused garbage to be in the buffer if the temp file
- overflowed has been fixed. (This only affected non-VMUNIX systems
- since the temp file cannot overflow on VMUNIX.)
-
- When a macro or global is undone, you no longer get picked up and
- dropped on line 1.
-
- The character | can now be escaped with \| in file names.
-
- A bug which prevented the confirm option to a substitution that
- was inside a source command has been fixed.
-
- A bug which caused the editor to not work if the tab stop size
- did not divide the screen width has been fixed.
-
- A bug on HP terminals that caused the screen to be messed up if
- you scrolled up something that began the same way as the echo line
- has been fixed.
-
- A macro bug which sometimes caused the next character after an
- escape to be ignored on an HP terminal has been fixed.
-
- A bug which caused unmap of strings with length 2 to fail has been
- fixed.
-
- A bug which left vi confused if you invoked a macro containing a
- quit to command mode and then did an undo has been fixed.
-
- An old ed bug which caused globals to fail when they did a substitute
- on the next line has been fixed.
-
- The % operator will now find matching square brackets the same way
- it does parentheses and braces. It will not display them in
- showmatch mode, however, and will not use a ] to match all ('s.
-
- Code has been added to handle the Beehive Superbee terminal,
- using f1 for escape and f2 for control C.
-
- The default value of the option shell is now taken from the
- environment variable SHELL, if present.
-
- Version 3.3 -- February 2, 1980
-
- The default window sizes have been changed. At 300 baud the
- window is now 8 lines (was 1/2 the screen size). At 1200 baud
- the window is now 16 lines (was 2/3 the screen size, which was
- usually also 16 for a typical 24 line CRT). At 9600 baud the
- window is still the full screen size. Any baud rate less than
- 1200 behaves like 300, any over 1200 like 9600.
-
- A new command mode command "x" (for "xit") has been added. This
- is the same as wq but will not bother to write if there have been
- no changes to the file. The command letter was chosen for
- convenience and compatibilty with hed.
-
- The command "ZZ" from vi is the same as ":x<cr>". This is
- the recommended way to leave the editor. Z must be typed twice
- since this is two easy to type by accident and has such severe
- effects if unintentional.
-
- The options w300, w1200, and w9600 can be set. They are synonyms
- for "window", but only apply at 300, 1200, or 9600 baud, resp.
- Thus you can specify you want a 12 line window at 300 baud and
- a 23 line window at 1200 baud with
- :set w300=12 w1200=23
-
- It is now possible to say
- :set window=5
- and get the effect the next time the screen is redrawn from scratch.
- (^L and Hit return to continue don't start from scratch.)
- This is sort of pointless, since both
- 5:<cr>
- and
- z5<cr>
- do the same thing with better results.
-
- The editor no longer uses nondestructive space, except when in
- insert mode. It instead prints the character it would be
- moving over. This is a real win on terminals that use an
- escape sequence to nd space.
-
- It is now possible from visual to string several search expressions
- together separated by semicolons the same as command mode. For
- example, you can say
- /foo/;/bar
- from visual and it will move to the first "bar" after the next "foo".
- This also works within one line.
-
- The option "mapinput" is dead. It has been replaced by a much
- more powerful mechanism: :map! (e.g. put an ! after the map).
- Map and unmap commands with ! apply only to input, others apply
- only to command mode.
-
- The new option "timeout" (default on) causes macros to time out
- after one second. Turn it off and they will wait forever.
-
- By using map! and setting notimeout, it is possible to get the
- effect of emacs abbreviation mode. Sanity checking is turned off
- for map when ! is present. This is a crude facility and does not
- take into account things like the abbreviation being part of a longer
- word. It also does not echo until it is satisfied.
-
- The new option "remap" (default on) causes the editor to attempt
- to map the result of a macro mapping again until the mapping fails.
- This makes it possible, say, to map q to # and #1 to something else
- and get q1 mapped to something else. Turning it off makes it possible
- to map ^L to l and map ^R to ^L without having ^R map to l.
-
- The new option "undomacro" (default on) makes it possible to undo
- macros as a unit. Leaving it off causes macros not to be treated
- specially. Macros with zero or one change work better with noum,
- with two or more changes better with um. This option may go away
- if it becomes unnecessary.
-
- The new (string) valued option "tags" allows you to specify a list
- of tag files, similar to the "path" variable of csh. The files
- are separated by spaces (which are entered preceded by a backslash)
- and are searched left to right. The default value is
- "tags /usr/lib/tags", which has the same effect as before.
- It is recommended that "tags" always be the first entry.
- On Ernie, /usr/lib/tags contains entries for the system defined
- library procedures from section 3 of the manual.
-
- ^R is now the same as ^L on terminals where the right arrow key
- sends ^L (The tvi and the adm 31).
-
- Looking for a tag now uses binary search.
-
- The "q" command from visual no longer works at all. You must
- use "Q" to get to ex command mode.
-
- A minor incompatibility with the v7 ed has been fixed. Previously,
- to do a global substitute with an escaped newline in the rhs, you
- had to put two \'s in ex and one in ed. Ex now accepts the single
- form as well as the double form. For example, instead of
- g/foo/s//foo\\
- bar/g
- (which still works), you can now type, as in ed,
- g/foo/s//foo\
- bar/g
- This means that the following ex command, which used to "work":
- g/foo/s//foo bar\
- .+1,/mumble/d
- won't work anymore unless you put the trailing / on the substitution.
- This usage is pretty obscure anyway.
-
- Several bugs relating to undoing macros have been fixed.
-
- A bug which caused the command "g/pattern" to print an error
- message if "pattern" occurred on the last line has been fixed.
-
- If you reply ":" to "Hit return to continue", you will again be
- asked "Hit return to continue" after the next command finishes.
-
- Limits have been raised so that an Ann Arbor terminal can be used,
- and long tags can now be accomodated.
-
- The maximum length of a string valued option has been raised from
- 32 to 64, for the benefit of the "tags" option.
-
- It is now possible to search for an escape or delete using f, F, t,
- T, ;, and ,. These characters must be quoted with ^V.
-
- The option "ttytype" is now in correct alphabetical order.
-
- A bug that caused HP terminals to mess up in insert mode when inserting
- before a tab which follows 7 or fewer characters at the beginning of a
- line (such as a tags file) has been fixed.
-
- It is now possible to include control D in your EXINIT or .exrc.
-
- A bug which caused the screen to mess up when a glob (such as xx*)
- doesn't match anything has been fixed.
-
- The editor now checks for extra junk after a /r.e./ from visual
- (other than the allowed z command) and beeps if any is found.
- Previously it was just ignored.
-
- A bug that caused j and k (up and down) to behave strangely after
- an insertion has been fixed.
-
- A bug which causes term to be displayed incorrectly and which
- caused a crash when changing terminal type when there happened
- to be several |'s and a long string in genbuf has been fixed.
- This bug was introduced in ex 2.9.
-
- The patch for echo lines longer than 80 characters has been
- repaired to do "Hit return to continue" after such lines and
- print the entire output.
-
- A bug that caused a messed up screen after a :sh command from
- open mode has been fixed.
-
- A bug which caused a tag request for a nonexistant tag to leave
- the editor in nomagic mode has been fixed.
-
- A bug which caused strange behavior if there is no default file
- name when an autowrite save is attempted has been fixed.
-
- A bug which caused the cursor to go to the wrong position when
- ^^D or 0^D is entered from column 2 in autoindent mode on terminals
- that can backspace has been fixed.
-
- Version 3.2 -- January 4, 1980
-
- A bug that caused nomagic to be set if an error happened within
- a tag command has been fixed.
-
- A bug that caused put commands to beep after a macro containing
- an error has been fixed.
-
- The mapinput option has been placed in alphabetical order.
-
- A bug that caused undo to undo more than one macro invocation
- on the same line has been fixed.
-
- On non VM/UNIX systems, the screen size has been increased to
- allow a 40 X 80 Ann Arbor to be used.
-
- Version 3.2 -- December 28, 1980
-
- Several limits have been increased for VM/UNIX. Longer lines,
- more characters of file names, longer regular expressions, etc.
- Huge files can now be edited directly. Larger terminals (up to
- 66 lines) can be used.
-
- An internal change has been made for VM/UNIX that causes error
- messages to be stored directly instead of in a disk file.
- This should cause faster response to errors.
-
- Version 3.1.1 -- December 13, 1979
-
- A bug that caused nested macros not to be undoable has been fixed.
-
- A bug that caused pounding on the escape key on terminals with
- arrow keys that send escape sequences to cause undo to screw up
- has been fixed.
-
- It is now acknowledged that macros cannot contain the put command.
- This is due to the implementation of put - previously a put inside
- a macro dumped a copy of the buffer instead of the desired text and
- left the editor in a very strange state. Now such a put just beeps.
-
- Version 3.1 -- November 1, 1979
-
- Versions from 3.1 up are too large to fit on pdp-11's.
- (Special overlay software is expected to be available soon
- for v7 pdp-11 Unix that will make it fit.) Version 2.9
- is 3.1 with only the bug fixes and very few of the enhancements.
- 2.9 will fit on a pdp-11. Version 2.10 will come out and may
- correspond to 3.2. (It turned out to correspond to 3.3)
-
- For compatibility with ed: 's<newline>' may be used as a
- command and means '&'. If you set the option "edcompatible"
- (abbr "ed") the presense or abscence of g and c suffices is
- remembered and can be toggled by repeating the suffices. The
- suffix "r" makes the substitution into "~" instead of "&".
-
- A new command line option -w<n> sets the value of window before
- starting ex. Hence: 'vi -w5 file' makes a quick change to a file
- easier at 300 baud.
-
- Arrow keys on terminals that send more than 1 character now
- work. Home up keys are supported as are the four directions.
- Ex no longer looks at the ma= entry in termcap, but uses the
- ku, kd, kl, kr, and kh entries. (Note that the HP 2621 will
- turn on function key labels, and even then you have to hold
- shift down. To avoid turning on the labels, and to give up the
- function keys, use terminal type 2621nl instead of 2621.)
-
- A parameterless macro facility is included from visual. Briefly,
- there are two flavors of macros:
- a) Put the macro body in a buffer register, say x. Then
- type @x to invoke it. @ may be followed by another @
- to repeat the last macro.
- This allows macros up to 512 chars.
- b) Use the map command from command mode (typically in the
- .exrc file) as follows:
- map lhs rhs
- where lhs will be mapped to rhs.
- There are restrictions: lhs's should be 1-keystroke
- (either 1 char or 1 function key) since they must be
- entered within 1 second. lhs no longer than 10 chars,
- rhs no longer than 100. To get " ", "\t", "|", or "\n"
- into lhs or rhs, escape them with ctrl V. (It may be
- necessary to escape the ctrl V with ctrl V if the map
- command is given from visual mode.)
- For 1 shot macros it is best to put the macro in a buffer register
- and map a key to '@r', since this will allow the macro to be edited.
-
- Macros can be deleted with
- unmap lhs
-
- The boolean option "mapinput" (mi) will, if on, cause macros to
- be mapped in input mode as well as command mode (in visual only).
- For example, you can define ctrl T to be four spaces with
- :map ^V^T_^V^V____
- :set mi
- where underlines represent spaces and the ctrl V's are necessary
- to get ctrl chars and spaces past various levels, and make ^T be
- a software tab that even works in the middle of a line.
-
- If the lhs of a macro is "#0" through "#9", this maps the particular
- function key instead of the 2 char # sequence, if the terminal has
- function keys. This only works if termcap has function key entries
- for the particular terminal. For terminals without function keys,
- the sequence #x means function key x, as typed. As a special case,
- on terminals without function keys, the #x sequence need not be
- typed within one second. The character # can be changed by using
- a macro in the usual way:
- map ^V^I #
- to use tab, for example. (This won't affect the map command, which
- still uses #, but just the invocation from visual mode.)
- The undo command will undo an entire macro call as a unit.
-
- New commands in visual: ^Y and ^E. These glitch the screen up
- and down 1 line, respectively. They can be given counts, controlling
- the number of lines the screen is glitched. They differ from ^U
- and ^D in that the cursor stays over the same line in the buffer
- it was over before rather than staying in the same place on the
- screen. (^Y on a dumb terminal with a full screen will redraw the
- screen moving the cursor up a few lines.) If you're looking for
- mnemonic value in the names, try this: Y is right next to U and
- E is right next to D.
-
- More new commands in visual: '&' is a synonym for ':&<cr>'.
- '~' changes the case of the letter under the cursor and moves
- to the next character.
-
- Ex looks in your environment for EXINIT. If it finds it, that
- is used instead of looking for your .exrc. This should make
- entry into ex faster, along with the termlib feature of looking
- for a termcap entry in TERMCAP.
-
- Version 2.13 -- September 23, 1980
-
- The provisions for changing the window size with a numeric
- prefix argument to certain visual commands have been deleted.
- The correct way to change the window size is to use the z
- command, for example z5<cr> to change the window to 5 lines.
-
- An undocumented "feature" which caused the ^^ command to return
- to the previous tag, if in the current file, instead of the
- previous file, has been removed.
-
- Version 2.12 -- July 23, 1980
-
- A change was made to the sys_errlist array in ex_subr.c so that
- Berkeley V7 quotas will produce the right error message.
-
- A couple of minor bug fixes were made to get the editor to
- compile on version 6. The option to use 1K BUFSIZ has been
- deleted, since it is no longer used on our 1K system.
-
- Version 2.11 -- June 24, 1980
-
- The visual page motion commands ^F and ^B now treat any preceding
- counts as number of pages to move, instead of changes to the
- window size. That is, 2^F moves forward 2 pages.
-
- A :vi <file> command from visual mode is now treated the same
- as a :edit <file> or :ex <file> command. The meaning of the
- vi command from ex command mode is not affected.
-
- A read only mode now lets you guarantee you won't clobber your
- file by accident. You can set the on/off option "readonly" (ro)
- and writes will fail unless you use an ! after the write.
- Commands such as x, ZZ, and autowrite, and in general anything
- that writes is affected. This option is turned on if you invoke
- ex with the -R flag. A new link called "view" has been created.
- View is just like vi but it sets readonly.
-
- The editor now supports certain terminals that use strings other
- then \r and \n for return and linefeed by implementing the cr
- and nl termcap options. (Thanks to UCLA for these enhancements).
-
- The termcap attribute ns is now checked for, and ex refuses to
- go into visual mode on such a terminal unless it has sf.
-
- If you change your start and stop characters to something other
- than the default ^S and ^Q, vi now turns them off. This causes
- people who change them to escape not to lose so badly.
- The quit character is once again turned off so that datamedias
- which send ^\ for the right arrow key work.
-
- If you type in an unmatched ) or } in showmatch mode, the editor
- will now beep to warn you about your mistake. The ) or } is
- still accepted.
-
- Editor scripts can now contain comments. Begin the comments with "
- (double quote). Comments can be on their own line or come at the
- end of command lines. The comment continues to the end of the line.
-
- The 3rd version of the USG tty driver is now supported, making it
- possible on USG systems to interrupt redrawing the screen and to
- not flush output when interruptable commands take place.
-
- The rewind command has been added to the list of commands that
- the autowrite option knows about.
-
- A bug on the USG system where hanging up the phone causes more
- than one SIGHUP to be sent has been compensated for.
-
- A bug which caused a file that bombed out in the middle of
- an edit command to be considered modified has been fixed.
-
- The source file ex_io.c has been split into ex_io.c and
- ex_unix.c to avoid a problem where many C compilers overflowed
- the symbol table.
-
- A bug which prevented turning off your prompt in your .exrc
- has been fixed.
-
- Some of the code internal to the editor has been rearranged
- and some comments added.
-
- The bug fix to the USG tty driver to output a null character
- as padding at 1200 baud has been improved to output a DEL
- at 1200 baud or above.
-
- Terminals with small screens (less than 20 columns or less
- than 5 lines) should now work.
-
- A bug which prevented you from entering the character DEL
- into the buffer if you changed your interrupt character to
- something else besides DEL has been fixed.
-
- A bug which caused things like d) and d} to miss the last
- character when they should have deleted to the end of the
- buffer has been fixed.
-
- A bug which caused the last character to be lost when you
- read in a file with no newline at the end of the last line
- has been fixed.
-
- A bug that caused garbage to be in the buffer if the temp file
- overflowed has been fixed.
-
- The character | can now be escaped with \| in file names.
-
- A bug which caused the editor to not work if the tab stop size
- did not divide the screen width has been fixed.
-
- A bug on HP terminals that caused the screen to be messed up if
- you scrolled up something that began the same way as the echo line
- has been fixed.
-
- An old ed bug which caused globals to fail when they did a substitute
- on the next line has been fixed.
-
- The % operator will now find matching square brackets the same way
- it does parentheses and braces. It will not display them in
- showmatch mode, however, and will not use a ] to match all ('s.
-
- Ex looks in your environment for EXINIT. If it finds it, that
- is used instead of looking for your .exrc. This should make
- entry into ex faster, along with the termlib feature of looking
- for a termcap entry in TERMCAP.
-
- Internally, it is possible to turn off about a dozen different
- options when compiling the editor to make it fit in 64K.
- See the makefile for a list of options.
-
- Version 2.10 -- February 2, 1980 (Corresponds to 3.3)
-
- The default window sizes have been changed. At 300 baud the
- window is now 8 lines (was 1/2 the screen size). At 1200 baud
- the window is now 16 lines (was 2/3 the screen size, which was
- usually also 16 for a typical 24 line CRT). At 9600 baud the
- window is still the full screen size. Any baud rate less than
- 1200 behaves like 300, any over 1200 like 9600.
-
- A new command mode command "x" (for "xit") has been added. This
- is the same as wq but will not bother to write if there have been
- no changes to the file. The command letter was chosen for
- convenience and compatibilty with hed.
-
- The command "ZZ" from vi is the same as ":x<cr>". This is
- the recommended way to leave the editor. Z must be typed twice
- since this is two easy to type by accident and has such severe
- effects if unintentional.
-
- The options w300, w1200, and w9600 can be set. They are synonyms
- for "window", but only apply at 300, 1200, or 9600 baud, resp.
- Thus you can specify you want a 12 line window at 300 baud and
- a 23 line window at 1200 baud with
- :set w300=12 w1200=23
-
- The "q" command from visual no longer works at all. You must
- use "Q" to get to ex command mode.
-
- The editor no longer uses nondestructive space, except when in
- insert mode. It instead prints the character it would be
- moving over. This is a real win on terminals that use an
- escape sequence to nd space.
-
- A minor incompatibility with the v7 ed has been fixed. Previously,
- to do a global substitute with an escaped newline in the rhs, you
- had to put two \'s in ex and one in ed. Ex now accepts the single
- form as well as the double form. For example, instead of
- g/foo/s//foo\\
- bar/g
- (which still works), you can now type, as in ed,
- g/foo/s//foo\
- bar/g
- This means that the following ex command, which used to "work":
- g/foo/s//foo bar\
- .+1,/mumble/d
- won't work anymore unless you put the trailing / on the substitution.
- This usage is pretty obscure anyway.
-
- A bug which caused the command "g/pattern" to print an error
- message if "pattern" occurred on the last line has been fixed.
-
- Limits have been raised so that an Ann Arbor terminal can be used,
- and long tags can now be accomodated.
-
- A bug that caused HP terminals to mess up in insert mode when inserting
- before a tab which follows 7 or fewer characters at the beginning of a
- line (such as a tags file) has been fixed.
-
- A bug which causes term to be displayed incorrectly and which
- caused a crash when changing terminal type when there happened
- to be several |'s and a long string in genbuf has been fixed.
- This bug was introduced in ex 2.9.
-
- The patch for echo lines longer than 80 characters has been
- repaired to do "Hit return to continue" after such lines and
- print the entire output.
-
- A bug that caused a messed up screen after a :sh command from
- open mode has been fixed.
-
- A bug which caused a tag request for a nonexistant tag to leave
- the editor in nomagic mode has been fixed.
-
- A bug which caused strange behavior if there is no default file
- name when an autowrite save is attempted has been fixed.
-
- A bug which caused the cursor to go to the wrong position when
- ^^D or 0^D is entered from column 2 in autoindent mode on terminals
- that can backspace has been fixed.
-
- In order to get 2.10 to fit on a v7 pdp-11, the following features
- have been deleted:
- The MASTERTAGS feature (undocumented use of /usr/lib/tags
- as an alternate tag file)
- Checking that a file being read in is an ascii file.
- Turning off ^Q/^S on a v7 system.
-
- Version 2.9 -- November 1, 1979
-
- The meanings of semicolon and newline, broken in 2.8, have been fixed.
- Newline with two arguments still prints the range, unless a semicolon
- was present, in which case only the last line is printed. Semicolon
- otherwise behaves as in ed (and ex 2.7).
-
- For compatibility with ed: '%' is an abbreviation for '1,$'.
- The default starting line for 'z' is '.+1' instead of '.'.
- If 'z' is followed by a number, this number is remembered
- (by setting the scroll option).
-
- The + options to the command line invocation and to the edit
- command now also work for the next command. In addition, the
- text after the + is no longer limited to a line number or
- / or ? search string, but can be any single command. (It cannot
- contain spaces except on command line invocation, and then must
- be quoted to make the shell happy.) The only special case is
- where + is used by itself - this is the same as +$.
-
- The way window sizes and scrolling commands are based on the options
- window and scroll has been rearranged. All command mode scrolling
- commands (z and ctrl D) are based on scroll: ^D moves scroll lines,
- z moves scroll*2 lines. Everything in visual (^D, ^U, ^F, ^B, z,
- window sizes in general) are based on the window option. The
- defaults are arranged so that everything seems as before, but
- on hardcopy terminals at 300 baud the default for scroll is
- 11 instead of 6.
-
- Whether ex prompts for commands now depends on the setting of the
- prompt variable, so inside script you can say 'set prompt' and
- get ex to prompt.
-
- Tags are now searched for in nomagic mode instead of the funny
- mode where magic characters were impossible to get.
-
- Paragraphs and sections with one letter names (such as those
- used by PWB/MM) now work - use a space (escaped by a backslash)
- for the second letter. Default paragraphs and sections are included
- for both MM and MS. (Thanks to adb for this)
-
- A bug involving 16 bit arithmetic on a vax for the yank command
- has been fixed.
-
- The text of the mailed message from expreserve has been improved
- slightly.
-
- The editor now always turns off the XTABS stty bit when in visual
- mode, making terminals that do special things with ^I work.
-
- The editor now knows about terminals with destructive tabs, like
- the teleray 1061, having the xt option.
-
- A bug that caused going past column 80 on terminals with insert line
- but not insert char (like the mime, h1500, or i100) to mess up the
- screen has been fixed.
-
- A bug on 2621's that causes lines longer than 80 chars long with
- embedded tabs to mess up when a tab was inserted has been fixed.
-
- A bug that caused the wrong line to suddenly appear under very
- rare circumstances involving small window sizes and long lines
- where a search left the cursor on the top line of the screen
- has been fixed.
-
- The bug that caused inverse video to sometimes be scrolled up
- into the file from an error message has been fixed.
-
- The join command has been fixed, so that '3,3j' no longer joins
- lines 3 and 4. ('3j' still does.) Thus, '/a/;/b/-j' works right
- even if b is found on the line after a.
-
- ex -v now finds your .exrc. In related changes, the default in
- vi is now magic and nobeautify.
-
- If your buffer is empty, ex won't refuse to do an edit, quit,
- or tag command because you haven't done a write.
-
- A bug causing visual undo not to work after '1,$!cat' has been
- fixed.
-
- Ex now decides for itself whether to use CBREAK or TIOCSETN
- by whether they are defined in <sgtty.h>. This eliminates much
- of the #ifdef USG or V6 lines. One USG line remains due to a bug
- in the USG tty driver at 1200 baud.
- Note that this will mess up if you use libretro because <sgtty.h>
- has CBREAK and TIOCSETN defined. Take these out of sgtty.h to fix this.
-
- Termcap options TI and TE have been added. These strings are
- respectively output at the beginning and end of the editing session.
-
- Values for the set command may now include `\ ' for space and
- control characters.
-
- Changes have been made to /etc/termcap (several new fields have
- been added) and to termlib (it now looks for TERMCAP in the environment
- and treats it as a termcap entry if the name of the terminal mentioned
- is the same as TERM and the entry doesn't start with a slash.
- If it starts with a slash it is treated as a filename, as before.
- Termcap also checks the 512 byte entry limit and skips lines beginning
- with # as comments. It is possible to define one terminal as being
- similar to another one with a few differences without making two
- copies of the description.) New termcap fields:
- ti terminal initialization string. This should be sent
- out at the beginning of any program that addresses
- the cursor.
- te Like te but at end of the program.
- (Thanks to adb for these two fields)
- us Start underlining.
- ue End underlining.
- uc Underline one character & move over it.
- hc (bool) terminal is hardcopy
- ns (bool) terminal doesn't scroll (tektronix)
- ff (bool) hardcopy knows ^L means formfeed.
- pt (bool) hardware tabs, maybe set by is
- xt (bool) destructive tabs (teleray 1061)
- ku sequence sent by keypad "up" arrow
- kd "down" arrow
- kl "left" arrow
- kr "right" arrow
- kh "home" arrow
- ks sequence to make keypad send these codes
- ke sequence to make keypad not send these codes.
- k0-k9 sequences sent by up to 10 "other" keys
- l0-l9 labels on k0-k9. If omitted, default = "f0" - "f9".
- ko additional keys on keypad, in terms of their
- termcap entry. For example, if "home down" and "clear"
- are present and send the same codes as ll and cl, use
- :ko=cl,ll:
- tc This entry is a list of differences from the named
- entry. THIS MUST BE THE LAST FIELD. Example: hp2621
- with no ks or ke (e.g. null string):
- hn|hp2621nl:ks@:ke@:tc=hp2621:
- The @ cancels the string even if it is defined later.
-
- Version 2.8 -- July 18, 1979
-
- It is now possible to backspace over the first character (:, /, or ?)
- on the echo line from visual. The effect is as though delete were hit
- except the bell isn't rung.
-
- The trailing slash in global commands is now optional.
- g/pat means g/pat/p
- (This change, as well as the corresponding changes to the substitute
- command and r.e. address are also in the latest version of ed.)
-
- The j, k, and l keys now move the cursor down, up, and right,
- respectively, in visual mode, as they used to do (and still do on
- 3a's). This is to avoid the creeping of these keys into the map
- descriptions of terminals and to compensate for the lack of arrow
- keys on terminals like HP's.
-
- Two arguments given to a newline command now print the range of
- lines instead of just the last line (as though 'p' were appended).
- To make forms like /foo/;/bar/ still work, the ; operator sets
- the dot as before but then forgets everything to the left of the ;.
-
- The + option invoked from the shell or the edit command has
- two new forms: +/pat and +?pat
- These cause the initial line to be chosen by a search for the
- pattern pat. Note that if any special characters are in the
- argument (such as ^, $, and even ?) it must be quoted.
-
- Two new options are added: autowrite (aw) and hardtabs (ht).
- Autowrite is a toggle, off by default. When on, if you have
- unsaved changes before a context switching command, a write
- is done automatically. The commands that may write are !,
- next, and tag. Note that there is an equivalent way to do the
- command with autowrite set without the write in each case:
- shell, tag!, and edit do not write.
-
- Hardtabs is a numeric option,, set to 8 by default.
- Changing this to, say, 4, tells ex that either your system
- expands tabs to every 4 spaces, or your terminal has hardware
- tabs set every 4 spaces.
-
- A bug that caused strange behaviour when an echo line contained
- more than 79 characters (from a long : command or one or more long
- filenames) has been patched by not printing any such characters
- past column 79.
-
- Handling of systems with nonstandard locations of files (where
- the maintainer of ex is not a superuser and cannot create files
- with names like /usr/lib/ex2.0strings or /etc/termcap) has been
- improved. If the file can't be found as is, it is tried in the
- current directory. If that fails, ex tries to run without it.
- (Previously it bombed immediately if the error message file wasn't
- in /usr/lib.)
-
- Shell commands containing ! or % characters are no longer echoed
- when in hush mode (as in 'ex -' from a shell file.)
-
- Version 2.7 -- June 10, 1979
-
- An inefficiency introduced in version 2.3, which increased the
- amount of time spent preparing output by approximately 30 percent
- has been corrected.
-
- A bug which caused ``wrapmargin'' to work as though all hardcopy
- terminals were 160 columns wide has been corrected.
-
- A bug which caused the display to become confused after the display
- of a long line at the bottom of the screen was suppressed (being
- replaced temporarily by an @) has been fixed. Previously, under
- some circumstances (e.g. after a put created the situation), scrolling
- up of the following text would cause the display of this long
- line to be skipped, so that the @ line would remain and the line
- itself would not be displayed.
-
- Version 2.6 -- June 2, 1979
-
- A bug which prevented the first field separator in a tags file
- from beginning with a blank has been fixed; if the separator
- was a blank previously, the tag would not be found in the tags file.
-
- A bug which caused the display to be messed up after a ``:''
- escape which created long lines has been fixed. Previously
- a substitute command which changed the last few lines on the screen
- to be very long would leave the screen messed up.
-
- A bug in display after 2 successive ``undo'' commands has been fixed.
- Previously if you opened new lines on the display, and then did
- 2 successive undo commands, the display would be messed up after the
- second undo if your terminal had insert/delete line.
-
- A bug on intelligent terminals which caused unnecessary delete
- character commands to be sent has been fixed. This occurred when
- you did not have ``autoindent'' set, and opened a new line
- below an existing line with tabs.
-
- The change operations in open mode on hardcopy terminals has been
- fixed. Previously there were several bugs in cursor placement
- when the change extended to just before a tab character.
-
- Several bugs in the handling of tabs in insert mode on intelligent
- terminals have been fixed. Previously, tabs would often expand
- incorrectly, leaving the wrong amount of white space, when an
- insert occurred just before a tab.
-
- A bug has been fixed which caused the editor to skip processing
- of the ``.exrc'' file when the terminal type set in the
- environment was unknown. The editor now processes ``.exrc'' in
- this case.
-
- [[A number of formatting changes have been made to the editor code
- to eliminate unreasonably long lines. In addition, the code
- from the Murray Hill and USG sites has been merged in conditionally,
- so that all sites can compile from the same source.]]
-
- Version 2.5 -- May 28, 1979
-
- A bug which caused the VE sequence not to be sent when exiting
- the editor via :q or :wq from visual has been fixed.
-
- A bug which caused the command r^Q<ESC> to be weird when it
- was repeated has been fixed.
-
- The $ command now sets the column for future cursor motions to
- effective infinity. Thus a `$' followed by up/down cursor motions
- moves at the right margin of each line.
-
- [[Internal: a bug in conditional compilation without the LISP
- features has been fixed.]]
-
- Several bugs relating to insert mode and intelligent terminals
- have been fixed:
-
- A bug which caused inserts on HP/DATAMEDIA like terminals to act
- strangely when the material was inserted immediately before a tab
- has been fixed.
-
- A bug which caused the insertion of full tabs to not appear to
- insert as many spaces as required (under strange circumstances)
- has been fixed.
-
- A bug which caused inserts on terminals with insert/delete line
- but no insert/delete character to act strangely if the insert
- caused a line to overflow has been fixed.
-
- The ``expreserve'' program has been improved; you now will get
- mail if a file is saved for you as a result of your phone being
- hung up accidentally.
-
- Version 2.4 -- May 19, 1979
-
- A bug during inserts on intelligent terminals which occasionally
- caused double ``~~'' characters on the last few lines of the display
- rather than just single `~' characters has been fixed.
-
- The w W b B e and E operations in visual now wrap around line
- boundaries. Thus a sequence of enough w commands will get to any
- word below the current position in the file, and b's will back
- up to any place before. Thus these are more like the sentence
- operations ( and ). You still can't back around line boundaries
- duing inserts however.
-
- Version 2.3 -- May 13, 1979
-
- The P command to ex is now a synonym for p, so that 1,$P works,
- if you don't let up on the shift key soon enough.
-
- The / and ? operations within visual and open now hit later
- (or earlier resp) occurrences of the same string on the same
- line. This makes scans using / and ? much more useful. You
- can move to the right on the current line by typing /pref<ESC>
- where `pref' is a prefix of the word you wish to move to, and
- delete to a following string `str' by doing d/str<ESC> if it is
- on the same or succeeding line. Previously the command
- d/pat/
- deleted lines through the next line containing `pat'; it now
- deletes text up to the next instance of `pat'. To delete to
- the next line containing `pat', do
- d/pat/0
- which is short for
- d/pat/+0
- In general if you use an offset after the scanning pattern,
- whole lines will always be affected.
-
- Several bugs relating to the setting of the previous context mark
- `` have been fixed, including one which caused operations such as
- d`` or c`` to occasionally dump core. In particular, the operations
- ( ) { } [[ ]] and %
- now set the previous context mark correctly, and the mark is set
- even if the motion by these operations lands in the same line.
-
- More optimization is now done on output cursor motions. This
- is particularly much better on HP terminals which have
- ridiculously long cursor addressing sequences. A new
- capability has been added to the termcap file to aid this:
- ``bt'' (backtab). Thanks to Chuck Haley for the new code to
- implement this.
-
- A bug has been fixed on intelligent terminals which caused part
- of the screen to be accidentally erased during insertions.
- This occurred only on the first line on the screen, when it
- became longer than one displayed line and only if a part of
- the screen (at the top) was currently not in use.
-
- A bug has been fixed which caused the command ``dp'' to be interpreted
- as ``delete to register p''. This normally went unnoticed since
- the ``autoprint'' option would cause the effect which the ``p'' was
- forcing.
-
- Version 2.2 -- May 6, 1979
-
- "d)" now deletes a line if the current line is a sentence rather
- than leaving an empty line.
-
- The command
- :s/str
- now deletes str if it can find it; previously it was an error.
-
- The editor now handles multiple ":" escapes correctly; previously
- the screen would not be redrawn necessitating a ^L to fix it if you
- gave a `:!command' to ``[Hit return to continue]''.
-
- Recursive calls to visual from within open or visual are no longer
- permitted. Previously ``:vi'' from within open mode would eventually
- leave the editor in a strange state.
-
- The %age in the status line is now correctly printed on 11's;
- Previously internal 16-bit overflows often caused it to be incorrect.
-
- The editor now ignores a ":" in front of commands.
- Thus you can say ``:read foo'' within ex.
-
- A bug which caused commands involving ]] to not be repeatable has
- been fixed. Previously ``d]]'' followed by ``.'' caused an error.
-
- "ayw now works correctly. Previously this silently did nothing.
-
- Several bugs in "recover" and "ex -r" have been fixed. Thanks
- to Andy Koenig for the fixes.
-
- In input mode in open and visual ^V (like tenex) is now equivalent
- to ^Q (which is reminiscent of ITS) superquoting the next character.
- A later version of the UNIX tty driver will implement the standard for
- ^S ^Q handshaking and make ^Q unusable.
-
- There are several typos on page 3 of the ``edit'' manual section:
- s/move "a/delete a/
- s/"a move ./put a/
- /move to copy/s//delete to yank/
-
- Version 2.1 -- April 5, 1979
-
- Invoking ex via
- ex -l
- now sets "lisp" and "showmatch". This is suitable for invocations
- from within Franz Lisp. If you don't like "showmatch", you can
- still use "ex -l", just put the command
- set noshowmatch
- in your .exrc file.
-
-